#!/bin/bash
set -e

cd $(dirname $0)/..

# load .env
. scripts/functions.sh
load_env

ensure_bbbhtml5yml

# check for non-optional environment variables,
# which got introduced later and may miss in existing
# .env files during upgrades
if [ -z "$EXTERNAL_IPv4" ]; then
    echo "ERROR: EXTERNAL_IPv4 is not set in .env"
    echo "BBB won't work without it."
    exit 1
fi

if [ "$ENABLE_HTTPS_PROXY" ] && [ -z "$LETSENCRYPT_EMAIL" ] && [ -z "$DEV_MODE" ]; then
    echo "ERROR: LETSENCRYPT_EMAIL is not set in .env"
    echo "you need to specify an email adress, otherwise the certificate"
    echo "retrieval will fail"
    exit 1
fi

function get_tag {
  # is submodule checked out?
  if [ -f "$1/.git" ]; then
    git --git-dir=$1/.git describe --tags --always
  else
    # get cached tag name from repos/tags
    grep "$1" repos/tags | awk '{print $2}'
  fi
}

# https://hub.docker.com/r/bigbluebutton/bbb-build
BBB_BUILD_TAG=v3.0.x-release--2025-02-06-143818

docker run  \
    --rm  \
    -v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
    -e TAG_BBB=$(get_tag repos/bigbluebutton) \
    -e TAG_FREESWITCH=$(get_tag repos/freeswitch) \
    -e TAG_WEBRTC_SFU=$(get_tag repos/bbb-webrtc-sfu) \
    -e TAG_WEBHOOKS=$(get_tag repos/bbb-webhooks) \
    -e TAG_PLAYBACK=$(get_tag repos/bbb-playback) \
    -e TAG_WEBRTC_RECORDER=$(get_tag repos/bbb-webrtc-recorder) \
    -e TAG_PADS=$(get_tag repos/bbb-pads) \
    -e COMMIT_ETHERPAD_SKIN=$(get_tag repos/bbb-etherpad-skin) \
    -e COMMIT_ETHERPAD_PLUGIN=$(get_tag repos/bbb-etherpad-plugin) \
    -e BBB_BUILD_TAG=${BBB_BUILD_TAG} \
    -e DEV_MODE=${DEV_MODE:-false} \
    -e IGNORE_TLS_CERT_ERRORS=${IGNORE_TLS_CERT_ERRORS:-} \
    -e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
    -e SIP_IP_ALLOWLIST=${SIP_IP_ALLOWLIST:-} \
    -e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
    -e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
    -e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
    -e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \
    -e ENABLE_PROMETHEUS_EXPORTER=${ENABLE_PROMETHEUS_EXPORTER:-false} \
    -e ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION=${ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION:-false} \
    jwilder/dockerize -template /docker-compose.tmpl.yml \
    > docker-compose.yml
